package com.nine.dao;


import com.nine.entity.Account;
import com.nine.entity.ConfirmPaycode;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

import com.nine.entity.Bills;
import com.nine.entity.UsersWithBLOBs;

/**
 * 银行账户表
 * 
 * @author hubing
 *
 */
public interface AccountMapper {
	
	/**
	 * 根据用户名获取支付密码
	 * @param username	用户名
	 * @return	支付密码 字符串
	 */
	public String getpayCodeByUname(String username);
	
	/**
	 * 根据用户名来修改密码
	 * @param username	用户名
	 * @param paycode	密码
	 * @return	影响行数
	 */
	public Integer updatePayCodeByUsername(@Param("username") String username, @Param("paycode") String paycode);
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table account
     *
     * @mbggenerated Wed Sep 12 11:18:13 CST 2018
     */
    int deleteByPrimaryKey(Integer accountid);

	int insert(Account record);

	int insertSelective(Account record);

	Account selectByPrimaryKey(Integer accountid);

	int updateByPrimaryKeySelective(Account record);

	int updateByPrimaryKeyWithBLOBs(Account record);


    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table account
     *
     * @mbggenerated Wed Sep 12 11:18:13 CST 2018
     */
    int updateByPrimaryKey(Account record);
    /**
     * 根据用户和密码查询用户是否存在
     * @param holder
     * @param paycode
     * @return
     */
    public Account getOneAccount(ConfirmPaycode confirmPaycode);


	/**
	 * 修改账户money余额。
	 * 
	 * @param account
	 * @return 1：修改成功，0：修改失败
	 */
	int updateMoneyByAccountid(Account account);

	/**
	 * 查询订单号是否存在
	 * 
	 * @param accountid
	 * @return 1：已存在，0：不存在
	 */
	int selectUUID(String bid);

	/**
	 * 添加订单表记录
	 * 
	 * @param bills
	 * @return
	 */
	int insertBills(Bills bills);

	/**
	 * 修改临时订单状态为已保存
	 * 
	 * @return
	 */
	int updateBillsState(String bid);

	/**
	 * 通过订单号，查询订单信息
	 * 
	 * @param bid
	 * @return
	 */
	Bills selectBills(String bid);

	/**
	 * 通过用户名username，查询user信息
	 * 
	 * @param username
	 * @return
	 */
	UsersWithBLOBs selectUserByName(String username);

	/**
	 * 订单支付完成后，通过订单号修改交易完成后的余额
	 * 
	 * @param bills （订单号、交易后余额）
	 * @return
	 */
	int updateBillsMoneynow(Bills bills);

	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写
	// 重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写重新编写

	/**
	 * 通过银行accountid修改money
	 * 
	 * @param map
	 * @return
	 */
	public int bank1UpdateMoney(Map<String, Object> map);

	/**
	 * 通过登录用户ID查询银行accountid
	 * 
	 * @param id
	 * @return
	 */
	public String bank1SelectAccountid(int id);

	/**
	 * 添加充值汇款订单信息
	 * 
	 * @param bills
	 * @return
	 */
	public int bank1InsertBills(Bills bills);

	/**
	 * 查询充值汇款订单是否存在
	 * 
	 * @param bid
	 * @return
	 */
	public int bank1SelectBillsBid(String bid);

	/**
	 * 通过登录用户ID，查询账户名和银行余额
	 * 
	 * @param id
	 * @return
	 */
	public Map<String, Object> bank1SelectUsernameOfMoneyByID(int id);

	/**
	 * 验证登录用户的支付密码
	 * 
	 * @param map
	 * @return
	 */
	public int bank1SelectPaycodeById(Map<String, Object> map);

	/**
	 * 通过登录用户的username获取用户ID
	 * 
	 * @param username
	 * @return
	 */
	public int bank1SelectUserIdByUsername(String username);

	/**
	 * 查询所有订单信息
	 * 
	 * @return
	 */
	public List<Bills> bank1SelectBillsAll();

	/**
	 * 查询登录用户所有充值汇款信息
	 * 
	 * @param username
	 * @return
	 */
	public List<Bills> bank1SelectBillsByUsernameAndCZ(String username);

	/**
	 * 通过登录用户ID查询username
	 * 
	 * @param id
	 * @return
	 */
	public String bank1SelectUsernameByID(int id);

	/**
	 * 通过登录用户username查询银行余额
	 * 
	 * @param username
	 * @return
	 */
	public float bank1selectMoneyByUsername(String username);

	/**
	 * 查询目标会员是否存在，且非注册会员
	 * 
	 * @param username
	 * @return
	 */
	public int bank1SelectUserIsExistence(String username);

	/**
	 * 验证密码
	 * 
	 * @param map
	 * @return
	 */
	public int bank1SelectPaycode(Map<String, Object> map);

	/**
	 * 通过用户ID修改银行金额
	 * 
	 * @param map
	 * @return
	 */
	public int bank1UpdateMoneyZZ(Map<String, Object> map);
	
	/**
	 * 查询登录用户所有转账信息
	 * 
	 * @param username
	 * @return
	 */
	public List<Bills> bank1SelectBillsByUsernameAndZZ(String username);

}